home *** CD-ROM | disk | FTP | other *** search
- /* Memory object priority demo for VirtualMem */
- /* Written by Kalle Sandström */
-
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <exec/libraries.h>
- #include <libraries/virtualmem.h>
-
- #include <proto/exec.h>
- #include <proto/virtualmem.h>
-
- #define BLOCKCOUNT 80 /* How many 64K blocks to allocate? */
-
- #ifdef __GNUC__
- int __nocommandline=TRUE;
- #endif /* __GNUC__ */
-
- struct Library *VirtualMemBase;
-
- int main()
- {
- APTR blocks[BLOCKCOUNT+1];
- UBYTE i;
-
- if(!(VirtualMemBase=OpenLibrary(VIRTUALMEMNAME,0L)))exit(20);
- for(i=0;i<BLOCKCOUNT-1;i++)blocks[i]=NULL;
- for(i=0;i<BLOCKCOUNT-1;i++)
- {
- blocks[i]=CreateVMem(65536,MEMF_CLEAR,0,NULL);
- printf("%s %d\n",blocks[i]?"Got":"Failed",i);
- if(blocks[i])
- {
- STRPTR strmem;
-
- if(strmem=LockVMem(blocks[i]))
- {
- sprintf(strmem,"Old McDonald had a hamburger stand, ei-ei-o (%d)",i);
- UnlockVMem(blocks[i]);
- }
- }
- }
- blocks[BLOCKCOUNT]=NULL;
- AutoAdjustPri(blocks);
- for(i=0;i<BLOCKCOUNT-1;i++)
- {
- if(blocks[i])
- {
- STRPTR mem;
-
- if(mem=LockVMem(blocks[i]))
- {
- printf("Locked %d (\"%s\")\n",i,mem);
- UnlockVMem(blocks[i]);
- } else printf("Didn't lock %d\n",i);
- ChangeVMemPri(blocks[i],-BLOCKCOUNT);
- }
- }
- for(i=0;i<BLOCKCOUNT-1;i++)if(blocks[i])RemoveVMem(blocks[i]);
- CloseLibrary(VirtualMemBase);
- }
-